//#define  _CRT_SECURE_NO_WARNINGS
//#include <iostream>
//#include <vector>
//using namespace std;
//#include <set>
////vector<int> arr;
////int tmp, n;
////set<int> _set;
////void dfs(int pos)
////{
////	if(tmp) _set.insert(tmp);
////	for (int i = pos; i < n; i++)
////	{
////		tmp += arr[i];
////		dfs(i + 1);
////		tmp -= arr[i];
////	}
////}
////int main()
////{
////	while (cin >> n)
////	{
////		arr.resize(n);
////		int sum = 0, _min = INT_MAX;
////		for (int i = 0; i < n; i++)
////			cin >> arr[i], sum += arr[i], _min = min(arr[i], _min);
////		dfs(0);
////		int rrr = 0;
////		for (int i = _min; i <= sum; i++)
////			if (!_set.count(i))
////			{
////				rrr = i;
////				break;
////			}
////		if (rrr) cout << rrr << endl;
////		else cout << sum + 1 << endl;
////	}
////	return 0;
////}
//
//
//int getFirstUnFormedNum(vector<int> arr, int len) {
//	int i, j;
//	int mi = arr[0], sum = 0;
//	for (i = 0; i < len; i++)
//	{
//		sum += arr[i];
//		if (arr[i] < mi)
//			mi = arr[i];
//	}
//	//vector <int>  dp(sum + 1, 0);
//	/*for (i = 0; i < len; i++)
//		for (j = sum; j >= arr[i]; j--)
//		{
//			if (dp[j - arr[i]] + arr[i] > dp[j])
//				dp[j] = dp[j - arr[i]] + arr[i];
//			else
//				dp[j] = dp[j];
//		}*/
//	vector<vector<int>> dp(len + 1, vector<int>(sum + 1));
//	for (int i = 1; i <= len; i++)
//	{
//		for (int j = 1; j <= sum; j++)
//		{
//			dp[i][j] = dp[i - 1][j];
//			if (j >= arr[i - 1]) dp[i][j] = max(dp[i][j], dp[i - 1][j - arr[i - 1]] + arr[i - 1]);
//		}
//	}
//	for (i = mi; i <= sum; i++)
//	{
//		if (i != dp[len][i])
//			return  i;
//	}
//	return  i;
//}
//int main()
//{
//	vector<int> arr{1, 2, 3};
//	getFirstUnFormedNum(arr, 3);
//}